<!--
  Copyright JS Foundation and other contributors, http://js.foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<script type="text/html" data-help-name="csv">
  <p>
    Выполняет преобразования между строкой в CSV формате и ее представлением в JavaScript-объекте, в любом направлении.
  </p>

  <h3>Принимает</h3>
  <dl class="message-properties">
    <dt>payload<span class="property-type">объект | массив | строка</span></dt>
    <dd>JavaScript объект, массив или CSV-строка.</dd>
  </dl>

  <h3>Выводит</h3>
  <dl class="message-properties">
    <dt>payload<span class="property-type">объект | массив | строка</span></dt>
    <dd>
      <ul>
        <li>Если на входе значение строкового типа, узел попытается проанализировать его как CSV и создает объект JavaScript из пар ключ/значение для каждой строки. Затем узел либо отправит сообщение для каждой строки или одно сообщение, содержащее массив объектов.</li>
        <li>Если на входе JavaScript объект, узел попробует построить CSV-строку.</li>
        <li>Если на входе массив простых значений, узел построит однострочную CSV-строку.</li>
        <li>Если на входе массив массивов или массив объектов, создается многострочная CSV-строка.</li>
      </ul>
    </dd>
  </dl>

  <h3>Подробности</h3>
  <p>
    Шаблон столбцов может содержать упорядоченный список имен столбцов. При преобразовании CSV в объект имена столбцов будут использоваться в качестве имен свойств. Кроме того, имена столбцов могут быть взяты из первой строки CSV.
  </p>
  <p>
    При преобразовании в CSV шаблон столбцов используется для определения того, какие свойства извлекать из объекта и в каком порядке.
  </p>
  <p>
    Если шаблон пуст, то узел может использовать простой список свойств, разделенных запятыми, предоставленных в <code>msg.columns</code>, чтобы определить, что извлечь. Если его нет, то все свойства объекта выводятся в том порядке, в котором они были найдены в первой строке.
  </p>
  <p>
    Если входные данные являются массивом, то шаблон столбцов используется только для необязательного генерирования строки с заголовками столбцов.
  </p>
  <p>
    Если выбрана опция 'разбирать числовые значения', строковые числовые значения будут возвращаться в виде чисел. К примеру, среднее значение в CSV-строке '1,"1,5",2'.
  </p>
  <p>
    Если выбрана опция 'включать пустые строковые значения', пустые строки будут возвращениы в результате. К примеру, среднее значение в CSV-строке '"1","",3'.
  </p>
  <p>
    Если выбрана опция 'включить null-значения', null-значения будут возвращениы в результате. К примеру, среднее значение в CSV-строке '"1",,3'.
  </p>
  <p>
    Узел может принимать входные данные, состоящие из нескольких частей, при условии, что свойство <code>parts</code> установлено правильно, например, из узла file-in или узла split.
  </p>
  <p>
    При выводе нескольких сообщений они будут иметь свойство <code>parts</code> и формировать полную последовательность сообщений.
  </p>
  <p>
    <b>Примечание.</b> В шаблоне столбцов должна использоваться запятая для разделения - даже если для данных выбран другой разделитель.
  </p>
</script>
